go
use master
go
--Eliminar DB invefish
drop database INVE_FISH
go
--Creacion de la Base de Datos
create database INVE_FISH
go
use INVE_FISH
go
--Creacion de Tabla Roles
go
create table Roles
(
ID_Rol int primary key,
Descripcion nvarchar(25),
)

GO
CREATE TABLE [dbo].[tbl_accion](
	[idtbl_accion] [tinyint] IDENTITY(1,1) NOT NULL,
	[descripcion] [varchar](12) NOT NULL,
 CONSTRAINT [PK_tbl_accion] PRIMARY KEY CLUSTERED 
(
	[idtbl_accion] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
CREATE TABLE [dbo].[tbl_audit_log](
	[idtbl_audit_log] [bigint] IDENTITY(1,1) NOT NULL,
	[ID_Tipo_Documento] [int] NOT NULL,
	[ID_Usuario] [int] NOT NULL,
	[idtbl_accion] [tinyint] NOT NULL,
	[fecha_accion] [datetime] NOT NULL CONSTRAINT [DF_tbl_audit_log_fecha_accion]  DEFAULT (getdate()),
	[idtbl_documento] [int] NOT NULL,
 CONSTRAINT [PK_tbl_audit_log] PRIMARY KEY CLUSTERED 
(
[idtbl_audit_log] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

-- CREACION DE ALMACENAMIENTO
GO
CREATE PROCEDURE [dbo].[auditoria_log_agregar]
	@idTipoDocumento int,
	@idUsuario int,
	@accion tinyint,
	@idDocumento int
AS
BEGIN
	INSERT INTO tbl_audit_log(ID_Tipo_Documento, ID_Usuario, idtbl_accion, idtbl_documento) 
	VALUES (@idTipoDocumento, @idUsuario, @accion, @idDocumento)
END

--Creacion de Tablas Accesos
go
create table Usuarios
(
ID_Usuario int primary key,
Usuario nvarchar(25),
Contrasenia nvarchar(25),
ID_Rol int
constraint fk_tipo_rol foreign key(ID_Rol) references Roles(ID_Rol)
)

go
--Creacion de Tabla Tipo de Producto
create table Tipo_Producto
(
ID_Tipo_Producto int primary key,
Descripcion nvarchar(25)
)

--Creacion de tabla Producto
go
create table Productos
(
ID_Producto int primary key,
Nombre_Producto nvarchar(50),
Origen nvarchar(25),
Presentacion nvarchar(25),
Peso int,
Talla nvarchar(25),
Costo int,
Ncom nvarchar(100),
ID_Tipo_Producto int,
constraint FK_Tipo_Producto foreign key(ID_Tipo_Producto)
references Tipo_Producto(ID_Tipo_Producto)
)
go
--Creacion de tabla Tipo de Documento
go
create table Tipo_Documento
(
ID_Tipo_Documento int primary key,
Tipo nvarchar(25)
)
--Creacion de tabla Tipo Bodega
go
create table Tipo_Bodega
(
ID_Tipo_Bodega int primary key,
Nombre_Bodega nvarchar(100)
)

--Creacion de tabla Bodega
go
create table Bodegas
(
ID_Bodega int primary key,
Descripcion_bodega nvarchar(100),
ID_Tipo_Bodega int,
constraint FK_Tipo_Bodega foreign key(ID_Tipo_Bodega)
references Tipo_Bodega(ID_Tipo_Bodega)
)

--Creacion de tabla Lotes
go
--create table Lotes
--(
--ID_Lote int primary key,
--Nombre nvarchar(25),
--Fecha_Ingreso nvarchar(8),
--Fecha_Expiracion nvarchar(8)
----)
----Insertar Valores en la tabla Lotes
--insert into Lotes values(1,'23FEB15','230215','230315')
--insert into Lotes values(2,'24FEB15','240215','240315')
--insert into Lotes values(3,'23FEB15','250215','250315')
--Creacion de Tipo Socio Negocio
go
create table Tipo_Socio
(
ID_Tipo_Socio int primary key,
Tipo nvarchar(50)
)

--Creacion de tabla Socio
go
create table Socio
(
ID_Socio int primary key,
codigo int,
Nombre nvarchar(100),
Direccion nvarchar(100),
Documento nvarchar(50),
Telefono nvarchar(12),
email nvarchar(25),
Contacto nvarchar(50),
ID_Tipo_Socio int,
constraint FK_Tipo_Socio foreign key(ID_Tipo_Socio) references Tipo_Socio(ID_Tipo_Socio)
)

--Creacion de Tabla Movimientos
go
create table Movimientos
(
ID_Movimientos int primary key,
Codigo int,
Fecha nvarchar(10),
Descripcion nvarchar(200),
SubTotal int,
Iva int,
Total int,
ID_Tipo_Documento int,
ID_Bodega int,
ID_Socio int,
--ID_Lote int,
constraint FK_Tipo_Documento foreign key(ID_Tipo_Documento) references
Tipo_Documento(ID_Tipo_Documento),
constraint FK_Bodega foreign key(ID_Bodega) references Bodegas(ID_Bodega),
constraint FK_Socio foreign key(ID_Socio) references Socio(ID_Socio)
--constraint FK_Lote foreign key(ID_Lote) references Lotes(ID_Lote)
)

--Creacion de Tabla MiInventario
go
create table Inventario
(
ID_Inventario int primary key,
ingresos int,
salidas int,
cantidad int,
ID_Producto int,
ID_Movimientos int,
constraint FK_Producto foreign key(ID_Producto) references Productos(ID_Producto),
constraint FK_Movimientos foreign key(ID_Movimientos) references Movimientos(ID_Movimientos)
)
go
--///////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////
--/////////////////////////////////////////////////////////////////////////////////////////////////
--Creacion de procedimientos de almacenados para cada tablas
--***********************************************************************************************
--Procedimiento de autenticacion
create PROCEDURE sp_Login
(
	@Usuario nvarchar(50), 
	@Contrasenia nvarchar (50)
)
AS
BEGIN

	SET NOCOUNT ON;

	SELECT (SELECT top(1) b.Descripcion  FROM Roles as b WHERE b.ID_Rol = a.ID_Rol)  as Descripcion
	FROM Usuarios as a
	WHERE a.Usuario = @Usuario
		AND a.Contrasenia = @Contrasenia 
  
  END
--*************************************************************************************
--Tabla Roles
--Procedimiento Agregar
go
Create Procedure roles_agregar
@descrip nvarchar(25),
@accion bit output
as
	Begin
		declare @id int, @r nvarchar(25)
		select @r = Descripcion from roles where Descripcion = @descrip
		select @id = MAX(ID_Rol) from roles
		if @r is null
		Begin
			if( @id is null)
				set @id = 1
			else
				set @id = @id + 1
			insert into roles values(@id,@descrip)
			set @accion = 1
			End
		else
			set @accion = 0
		return @accion
	End
go
--Procedimento Mostrar
go
Create Procedure roles_mostrar
@login nvarchar(25) = null
as
Begin
	if (@login is null)
		select * from roles
	else
		select * from roles 
		where Descripcion like '%' +@login + '%'
End
--Procedimiento Actualizar
go
Create Procedure roles_actualizar
@id int, @desc nvarchar(25),
@accion bit output
as
	Begin
		update roles
		set ID_Rol = @id,descripcion = @desc
		where ID_Rol = @id
		set @accion = 1
		return @accion
	End
go
--Procedimiento para elimnar
go
Create Procedure roles_eliminar
@id int, @desc nvarchar(25),
@accion bit output
as
   Begin try
	delete from roles where ID_Rol = @id and 
	descripcion = @desc
	set @accion = 1
	return @accion
   End try
   Begin catch
	set @accion = 0
	return @accion
	End catch
--***********************************************************************************************
--Tabla Usuarios
--Procedimiento Agregar
go
Create Procedure usuarios_agregar
@usua nvarchar(25),
@contra nvarchar(25),
@idrol int,
@accion bit output
as
	Begin
		declare @id int, @r nvarchar(25)
		select @r = Usuario from usuarios where Usuario = @usua
		select @id = MAX(ID_Usuario) from usuarios
		if @r is null
		Begin
			if( @id is null)
				set @id = 1
			else
				set @id = @id + 1
			insert into usuarios values(@id,@usua,@contra,@idrol)
			set @accion = 1
			End
		else
			set @accion = 0
		return @accion
	End
go
--Procedimento Mostrar
go
Create Procedure usuarios_mostrar
as
Begin
select u.ID_Usuario, u.Usuario, u.Contrasenia, r.Descripcion, u.ID_Rol from Usuarios u inner join Roles r on u.ID_Rol=r.ID_Rol
End
--Procedimiento Actualizar
go
Create Procedure usuarios_actualizar
@idusua int,
@usua nvarchar(25),
@contra nvarchar(25),
@idrol int,
@accion bit output
as
	Begin
		update Usuarios
		set ID_Usuario = @idusua,Usuario = @usua,
		Contrasenia = @contra, ID_Rol = @idrol
		where ID_Usuario = @idusua
		set @accion = 1
		return @accion
	End
go
--Procedimiento para elimnar
go
Create Procedure usuarios_eliminar
@idusua int,
@usua nvarchar(25),
@contra nvarchar(25),
@idrol int,
@accion bit output
as
   Begin try
	delete from Usuarios where ID_Usuario = @idusua and 
	Usuario = @usua and Contrasenia = @contra and ID_Rol = @idrol
	set @accion = 1
	return @accion
   End try
   Begin catch
	set @accion = 0
	return @accion
	End catch
--***********************************************************************************************
--Tabla Items
--Procedimiento Agregar
go
Create Procedure items_agregar
@comp int,
@nomb nvarchar(50),
@ori nvarchar(25),
@pres nvarchar(25),
@pes int,
@tal nvarchar(25),
@costo int,
@nomco nvarchar(100),
@idtipo int,
@accion bit output
as
	Begin
		declare @id int, @r nvarchar(25)
		select @r = ID_Producto from Productos where ID_Producto = @comp
		select @id = MAX(ID_Producto) from Productos
		if @r is null
		Begin
			if( @id is null)
				set @id = 1
			else
				set @id = @id + 1
			insert into Productos values(@id,@nomb,@ori,@pres,@pes,@tal,@costo,@nomco,@idtipo)
			set @accion = 1
			End
		else
			set @accion = 0
		return @accion
	End
go
--Procedimento Mostrar
go
Create Procedure items_mostrar
as
Begin
select p.ID_Producto, p.Nombre_Producto, p.origen, p.presentacion, p.Peso, p.talla, p.Costo, tp.Descripcion, p.ID_Tipo_Producto
 from Productos p inner join Tipo_Producto tp on p.ID_Tipo_Producto=tp.ID_Tipo_Producto
End
go
---Procedimiento Mostrar productos por tipo de productos
create proc items_mostrar_por_tipo
@id int
as
begin
select pro.ID_Producto, pro.Ncom, pro.Peso from Productos pro inner join
Tipo_Producto tpro on pro.ID_Tipo_Producto = tpro.ID_Tipo_Producto
where tpro.ID_Tipo_Producto=@id
end
go
---Procedimiento Mostrar el peso del producto
create proc items_mostrar_peso
@id int
as
begin
select pro.ID_Producto, pro.Peso from Productos pro
where pro.ID_Producto=@id
end
--Procedimiento Actualizar
go
Create Procedure items_actualizar
@idprod int,
@nomb nvarchar(50),
@ori nvarchar(25),
@pes int,
@pres nvarchar(25),
@tal nvarchar(25),
@costo int,
@idtipo int,
@accion bit output
as
	Begin
		update Productos
		set ID_Producto = @idprod, Nombre_Producto = @nomb,
		Origen = @ori,  Presentacion = @pres, Peso = @pes, Talla = @tal,
		Costo = @costo, ID_Tipo_Producto = @idtipo
		where ID_Producto = @idprod
		set @accion = 1
		return @accion
	End
go
--Procedimiento para elimnar
go
Create Procedure items_eliminar
@idprod int,
@nomb nvarchar(50),
@ori nvarchar(25),
@pes int,
@pres nvarchar(25),
@tal nvarchar(25),
@costo int,
@idtipo int,
@accion bit output
as
   Begin try
	delete from Productos where ID_Producto = @idprod and Nombre_Producto = @nomb and
		Origen = @ori  and Presentacion = @pres and Peso = @pes and Talla = @tal and 
		Costo = @costo and ID_Tipo_Producto = @idtipo
	set @accion = 1
	return @accion
   End try
   Begin catch
	set @accion = 0
	return @accion
	End catch
--Procedimiento mostrar tipo de productos
go
create proc Tproducto_mostrar
as
begin
select * from Tipo_Producto
end
exec Tproducto_mostrar
--***********************************************************************************************
--Tabla Bodega
--Procedimiento Agregar
go
Create Procedure bodegas_agregar
@des nvarchar(100),
@idTbodega int,
@accion bit output
as
	Begin
		declare @id int, @r nvarchar(100)
		select @r = Descripcion_bodega from Bodegas where Descripcion_bodega = @des
		select @id = MAX(ID_Bodega) from Bodegas
		if @r is null
		Begin
			if( @id is null)
				set @id = 1
			else
				set @id = @id + 1
			insert into Bodegas values(@id,@des,@idTbodega)
			set @accion = 1
			End
		else
			set @accion = 0
		return @accion
	End
go
--Procedimento Mostrar
go
Create Procedure bodegas_mostrar
as
Begin
select b.ID_Bodega, b.Descripcion_bodega,tb.Nombre_Bodega, b.ID_Tipo_Bodega 
from Bodegas b inner join Tipo_Bodega tb on b.ID_Tipo_Bodega = tb.ID_Tipo_Bodega
End
--Procedimiento Actualizar
go
Create Procedure bodegas_actualizar
@idBod int,
@des nvarchar(100),
@idTbodega int,
@accion bit output
as
	Begin
		update Bodegas
		set ID_Bodega = @idBod, Descripcion_bodega = @des,
		ID_Tipo_Bodega = @idTbodega
		where ID_Bodega = @idBod
		set @accion = 1
		return @accion
	End
go
--Procedimiento para elimnar
go
Create Procedure bodegas_eliminar
@idBod int,
@des nvarchar(100),
@idTbodega int,
@accion bit output
as
   Begin try
	delete from Bodegas where ID_Bodega = @idBod and Descripcion_bodega = @des and
		ID_Tipo_Bodega = @idTbodega
	set @accion = 1
	return @accion
   End try
   Begin catch
	set @accion = 0
	return @accion
	End catch
--Procedimiento mostrar tipo de productos
go
create proc TBodegas_mostrar
as
begin
select * from Tipo_Bodega
end
--***********************************************************************************************
--Tabla Socio
--Procedimiento Agregar
go
Create Procedure socios_agregar
@nomb nvarchar(100),
@dir nvarchar (100),
@doc nvarchar (50),
@tel nvarchar (12),
@email nvarchar (25),
@cont nvarchar (50),
@idTsocio int,
@accion bit output
as
	Begin
		declare @id int, @se int, @r nvarchar(100)
		select @r = Nombre from Socio where Nombre = @nomb
		select @id = MAX(ID_Socio) from Socio
		select @se = MAX(codigo) from Socio where ID_Tipo_Socio = @idTsocio
		if @r is null
		Begin
			if( @id is null)
				set @id = 1
				
			else
				set @id = @id + 1
				
			if(@se is null)
				set @se = 1
			else
				set @se = @se +1
			insert into Socio values(@id,@se,@nomb,@dir,@doc,@tel,@email,@cont,@idTsocio)
			set @accion = 1
			End
		else
			set @accion = 0
		return @accion
	End
go
--Procedimento Mostrar
go
Create Procedure socios_mostrar
as
Begin
select s.ID_Socio, s.codigo, s.Nombre,s.Direccion,s.Documento,s.Telefono, s.email, s.Contacto, ts.Tipo, ts.ID_Tipo_Socio
 from Socio s inner join Tipo_Socio ts on s.ID_Tipo_Socio = ts.ID_Tipo_Socio
End
--Procedimiento Actualizar
go
Create Procedure socios_actualizar
@id int,
@cod int,
@nomb nvarchar(100),
@dir nvarchar (100),
@doc nvarchar (50),
@tel nvarchar (12),
@email nvarchar (25),
@cont nvarchar (50),
@idTsocio int,
@accion bit output
as
	Begin
		update Socio
		set ID_socio = @id, codigo = @cod, Nombre = @nomb, Direccion = @dir, Documento = @doc, Telefono = @tel, email =@email,
		Contacto = @cont, ID_Tipo_Socio = @idTsocio
		where ID_Socio = @id
		set @accion = 1
		return @accion
	End
go
--Procedimiento para elimnar
go
Create Procedure socios_eliminar
@id int,
@cod int,
@nomb nvarchar(100),
@dir nvarchar (100),
@doc nvarchar (50),
@tel nvarchar (12),
@email nvarchar (25),
@cont nvarchar (50),
@idTsocio int,
@accion bit output
as
   Begin try
	delete from Socio where ID_Socio = @id and codigo = @cod and Nombre = @nomb and
		Direccion = @dir and Documento = @doc and Telefono = @tel
		and email = @email and Contacto = @cont and ID_Tipo_Socio = @idTsocio
	set @accion = 1
	return @accion
   End try
   Begin catch
	set @accion = 0
	return @accion
	End catch
	--exec socios_eliminar 4,3,'1','1','1','1','1','1',1
	--select * from Socio
--Procedimiento mostrar tipo de productos
go
create proc TSocios_mostrar
as
begin
select * from Tipo_Socio
end
go
--***********************************************************************************************
--Tabla Movimiento
--Procedimiento Agregar
go
select * from Tipo_Documento
go
Create Procedure Movimientos_agregar
@fec nvarchar(10),
@desc nvarchar(200),
@stotal int,
@iva int,
@total int,
@idTdoc integer,
@idBodega integer,
@idSocio integer,
@accion bit output
as
	Begin
		declare @id int, @se int,  @r nvarchar(100)
		select @r = ID_Tipo_Documento from Movimientos where ID_Tipo_Documento = @idTdoc
		select @id = MAX(ID_Movimientos) from Movimientos
		select @se = MAX(Codigo) from Movimientos where ID_Tipo_Documento = @idTdoc
		if @r is not null
		Begin
			if( @id is null)
				set @id = 1
			else
				set @id = @id + 1
			if(@se is null)
				set @se = 1
			else
				set @se = @se +1
			insert into Movimientos values(@id,@se,@fec,@desc,@stotal,@iva,@total,@idTdoc,@idBodega,@idSocio)
			set @accion = 1
			End
		else
			set @accion = 0
			return @accion
	End
go

---Procedimiento encontrar codigo
go
create proc movimiento_codigo
@idMov int
as
begin
select * from Movimientos m where m.ID_Movimientos = @idMov
end

---- Procedimiento Actualizar
go
Create Procedure Movimiento_actualizar

@id int,
@se int,
@fec nvarchar(10),
@desc nvarchar(200),
@stotal int,
@iva int,
@total int,
@idTdoc integer,
@idBodega integer,
@idSocio integer,
@accion bit output

as
	Begin
		update Movimientos
		set ID_Movimientos = @id, Codigo = @se, Fecha = @fec, Descripcion = @desc, SubTotal = @stotal, Iva = @iva, Total = @total,
		ID_Tipo_Documento =@idTdoc, ID_Bodega = @idBodega, ID_Socio = @idSocio
		where ID_Movimientos = @id
		set @accion = 1
		return @accion
	End
go

----Procedimiento Mostrar Entradas
go
Create Procedure Movimientos_mostrar
@id int
as
Begin
		select * from Movimientos where ID_Tipo_Documento=@id
End
go
--Procedimiento para mostrar el detalle de los movimientos de Entradas
create proc detalle_mostrar_entradas
@id integer
as
begin
select i.ID_Inventario, p.Nombre_Producto, p.Presentacion, p.Peso, p.Talla, i.ingresos 
from Inventario i inner join Productos p on i.ID_Producto = p.ID_Producto where ID_Movimientos = @id
end
go
--Procedimiento para mostrar el detalle de los movimientos de Salidas
create proc detalle_mostrar_salidas
@id integer
as
begin
select i.ID_Inventario, p.Nombre_Producto,  p.Presentacion, p.Peso, p.Talla, i.salidas 
from Inventario i inner join Productos p on i.ID_Producto = p.ID_Producto where ID_Movimientos = @id
end
go
--Procedimiento mostrar el ultimo movimiento guardado para comenzar a ingresar las lineas del detalle de la orden
go
create proc movimiento_reciente
as
begin
select MAX(ID_Movimientos) from Movimientos
end
go
--Procedimiento mostrar productos en el combobox para agragarlo en el detalle del movimento de entradas
go
create proc filtro_producto_entradas
@nomb nvarchar(50)
as
begin
select ID_Producto ,Ncom as Producto from Productos where Ncom like '%'+@nomb+'%'
end
go
--Procedimiento mostrar productos en el combobox para agragarlo en el detalle del movimento de salidas
go
create proc filtro_producto_salidas
@nomb nvarchar(50)
as
begin
--select ID_Producto ,Ncom as Producto from Productos where Ncom like '%'+@nomb+'%'
select p.ID_Producto,p.Ncom, SUM(i.ingresos-i.salidas) as inventario 
from Productos p inner join Inventario i on i.ID_Producto=p.ID_Producto where Ncom like '%'+@nomb+'%'
group by p.ID_Producto,p.Ncom
end
go
------Procedimiento para filtrar productos para facturacion
go
create proc Inventario_Factura
@nomb nvarchar(100)
as
begin
select p.ID_Producto, p.Ncom, SUM(i.ingresos-i.salidas) as Inventario from movimientos m inner join
 Inventario i on m.ID_Movimientos = i.ID_Movimientos inner join Productos p on i.ID_Producto = p.ID_Producto
 inner join Bodegas b on m.ID_Bodega = b.ID_Bodega where b.ID_Bodega = 4 and p.Ncom like '%'+@nomb+'%'  group by p.ID_Producto,p.Ncom 
 end
go
---------- Procedimiento mostrar SUBTOTAL, IVA, TOTAL
go
create proc calcular_totales
@idMov int
as
begin
select SUM(i.cantidad) as SubTotal, SUM(i.cantidad * 0.15) as IVA,
(SUM(i.cantidad) +  SUM(i.cantidad * 0.15))as TOTAL 
from Movimientos m inner join Inventario i on m.ID_Movimientos = i.ID_Movimientos 
where m.ID_Movimientos = @idMov
end




--*************************************************************************************
--Tabla Inventario
--Procedimiento Agregar
go
Create Procedure inventario_agregar
@ingre int,
@sali int,
@idProd int,
@cant int,
@idMovi int,
@accion bit output
as
	Begin
		declare @id int
		
		select @id = MAX(ID_Inventario) from Inventario
			if( @id is null)
		
				set @id = 1
			else
				set @id = @id + 1
			insert into Inventario values(@id,@ingre,@sali,@cant,@idProd,@idMovi)
			set @accion = 1
					
		return @accion
	End
go
---Procedimiento para mostrar costo del producto
go
create proc items_mostrar_costo
@idPro int
as
begin
select * from Productos p where p.ID_Producto= @idPro
end
go

--Procedimiento mostrar inventario Entradas
go
create proc inventario_mostrar_entradas
@Idmov int
as
begin
select p.Ncom, i.ingresos from Inventario i inner join Productos p on i.ID_Producto = p.ID_Producto where i.ID_Movimientos = @Idmov
end
--Procedimiento mostrar inventario Salidas
go
create proc inventario_mostrar_salidas
@Idmov int
as
begin
select p.Ncom, i.salidas from Inventario i inner join Productos p on i.ID_Producto = p.ID_Producto where i.ID_Movimientos = @Idmov
end

--Procedimiento para mostrar solo proveedor o solo clientes en los movimientos
go
create proc socio_mostrar_entrada
@id int
as
begin
select * from Socio s where s.ID_Tipo_Socio=@id
end
go
--Procedimiento para mostrar solo bodegas segun el rol
go
create proc bodegas_mostrar_mov
@id int
as
begin
select * from Bodegas b where b.ID_Tipo_Bodega = @id
end
--Procedimiento para mostrar el inventario por bodega para los movmientos internos
go
create proc inventario_mostrar_por_bodega
@id int
as
begin
select p.ID_Producto, p.Ncom, SUM(i.ingresos-i.salidas) as Inventario from movimientos m inner join Inventario i on m.ID_Movimientos = i.ID_Movimientos inner join
Productos p on i.ID_Producto = p.ID_Producto inner join Bodegas b on m.ID_Bodega = b.ID_Bodega where b.ID_Bodega = @id
group by p.ID_Producto,p.Ncom 
end
----Procedimientos para reportes
---Reporte entrada
go
create proc reporteEntradaMP
@idmovi int
as
begin
select * from Movimientos movi inner join Inventario inve on movi.ID_Movimientos = inve.ID_Movimientos 
inner join Productos pro on inve.ID_Producto = pro.ID_Producto inner join Socio soc on
soc.ID_Socio = movi.ID_Socio inner join Bodegas bod on movi.ID_Bodega = bod.ID_Bodega where movi.ID_Movimientos = @idmovi
end
